/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor..
 */
package ComponenteEntidad;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Marilyn
 */
@Entity
@Table(name = "viaje")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Viaje.findAll", query = "SELECT v FROM Viaje v"),
    @NamedQuery(name = "Viaje.findByIdViaje", query = "SELECT v FROM Viaje v WHERE v.idViaje = :idViaje"),
    @NamedQuery(name = "Viaje.findByViaHoraSalida", query = "SELECT v FROM Viaje v WHERE v.viaHoraSalida = :viaHoraSalida"),
    @NamedQuery(name = "Viaje.findByViaHoraLlegada", query = "SELECT v FROM Viaje v WHERE v.viaHoraLlegada = :viaHoraLlegada"),
    @NamedQuery(name = "Viaje.findByViaFehaSalida", query = "SELECT v FROM Viaje v WHERE v.viaFehaSalida = :viaFehaSalida"),
    @NamedQuery(name = "Viaje.findByViaFechaLlegada", query = "SELECT v FROM Viaje v WHERE v.viaFechaLlegada = :viaFechaLlegada"),
    @NamedQuery(name = "Viaje.findByViaPrecio", query = "SELECT v FROM Viaje v WHERE v.viaPrecio = :viaPrecio")})
public class Viaje implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idViaje")
    private Integer idViaje;
    @Size(max = 10)
    @Column(name = "via_HoraSalida")
    private String viaHoraSalida;
    @Size(max = 10)
    @Column(name = "via_HoraLlegada")
    private String viaHoraLlegada;
    @Column(name = "via_FehaSalida")
    @Temporal(TemporalType.DATE)
    private Date viaFehaSalida;
    @Column(name = "via_FechaLlegada")
    @Temporal(TemporalType.DATE)
    private Date viaFechaLlegada;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "via_Precio")
    private BigDecimal viaPrecio;
    @JoinColumn(name = "idChoferTwoPersonal", referencedColumnName = "idPersona")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Empleado empleado;
    @JoinColumn(name = "idChoferOnePersonal", referencedColumnName = "idPersona")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Empleado empleado1;
    @JoinColumn(name = "idTerramozaPersonal", referencedColumnName = "idPersona")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Empleado empleado2;
    @JoinColumn(name = "idbus", referencedColumnName = "idbus")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Bus bus;
    @JoinColumn(name = "idTipoServicio", referencedColumnName = "idTipoServicio")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Tiposervicio tiposervicio;
    @JoinColumn(name = "idRuta", referencedColumnName = "idRuta")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Ruta ruta;
    @JoinColumn(name = "idAgencia", referencedColumnName = "idAgencia")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Agencia agencia;

    public Viaje() {
    }

    public Viaje(Integer idViaje) {
        this.idViaje = idViaje;
    }

    public Integer getIdViaje() {
        return idViaje;
    }

    public void setIdViaje(Integer idViaje) {
        this.idViaje = idViaje;
    }

    public String getViaHoraSalida() {
        return viaHoraSalida;
    }

    public void setViaHoraSalida(String viaHoraSalida) {
        this.viaHoraSalida = viaHoraSalida;
    }

    public String getViaHoraLlegada() {
        return viaHoraLlegada;
    }

    public void setViaHoraLlegada(String viaHoraLlegada) {
        this.viaHoraLlegada = viaHoraLlegada;
    }

    public Date getViaFehaSalida() {
        return viaFehaSalida;
    }

    public void setViaFehaSalida(Date viaFehaSalida) {
        this.viaFehaSalida = viaFehaSalida;
    }

    public Date getViaFechaLlegada() {
        return viaFechaLlegada;
    }

    public void setViaFechaLlegada(Date viaFechaLlegada) {
        this.viaFechaLlegada = viaFechaLlegada;
    }

    public BigDecimal getViaPrecio() {
        return viaPrecio;
    }

    public void setViaPrecio(BigDecimal viaPrecio) {
        this.viaPrecio = viaPrecio;
    }

    public Empleado getEmpleado() {
        return empleado;
    }

    public void setEmpleado(Empleado empleado) {
        this.empleado = empleado;
    }

    public Empleado getEmpleado1() {
        return empleado1;
    }

    public void setEmpleado1(Empleado empleado1) {
        this.empleado1 = empleado1;
    }

    public Empleado getEmpleado2() {
        return empleado2;
    }

    public void setEmpleado2(Empleado empleado2) {
        this.empleado2 = empleado2;
    }

    public Bus getBus() {
        return bus;
    }

    public void setBus(Bus bus) {
        this.bus = bus;
    }

    public Tiposervicio getTiposervicio() {
        return tiposervicio;
    }

    public void setTiposervicio(Tiposervicio tiposervicio) {
        this.tiposervicio = tiposervicio;
    }

    public Ruta getRuta() {
        return ruta;
    }

    public void setRuta(Ruta ruta) {
        this.ruta = ruta;
    }

    public Agencia getAgencia() {
        return agencia;
    }

    public void setAgencia(Agencia agencia) {
        this.agencia = agencia;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idViaje != null ? idViaje.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Viaje)) {
            return false;
        }
        Viaje other = (Viaje) object;
        if ((this.idViaje == null && other.idViaje != null) || (this.idViaje != null && !this.idViaje.equals(other.idViaje))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "ComponenteEntidad.Viaje[ idViaje=" + idViaje + " ]";
    }
    
}
